# enable warnings
function(enable_warnings target)
  if(MSVC)
    target_compile_definitions(${target} PRIVATE _CRT_SECURE_NO_WARNINGS)
    target_compile_options(${target} PRIVATE /W4)
    target_compile_options(${target} PRIVATE /WX)
  elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
    target_compile_options(${target} PRIVATE -Werror)
    target_compile_options(${target} PRIVATE -Wall)
    target_compile_options(${target} PRIVATE -Wextra)
    target_compile_options(${target} PRIVATE -Wpedantic)
    target_compile_options(${target} PRIVATE -Wno-gnu-zero-variadic-macro-arguments)
  elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
    target_compile_options(${target} PRIVATE -Wall)
    target_compile_options(${target} PRIVATE -Werror)
    target_compile_options(${target} PRIVATE -Wextra)
    target_compile_options(${target} PRIVATE -Wpedantic)
  endif()
endfunction()